package com.lyc.service;

import com.lyc.DTO.UserDTO;
import com.lyc.DTO.AdminUserDTO;
import jakarta.validation.constraints.Pattern;
import com.lyc.pojo.User;
import org.hibernate.validator.constraints.URL;

import java.util.List;

public interface UserService {
    // 通过用户名查询用户
    User findByUserName(String username);

    // 注册
    void register(String username,  String password, String avatar);

    // 获取用户帖子数量
    Integer getPostCount(Integer userId);

    // 通过id查询用户
    User findById(Integer userId);

    // 修改用户头像
    void updateAvatar(@URL String avatar);

    // 修改用户信息
    void updateById(UserDTO userDTO);
    
    // 管理员修改用户信息
    void updateUserInfoByAdmin(AdminUserDTO adminUserDTO) throws Exception;
    
    // 获取全部用户列表
    List<User> getAllUser();
    
    // 批量更新用户状态
    void batchUpdateUserStatus(List<Integer> userIds, String status);
    
    // 批量更新用户角色
    void batchUpdateUserRole(List<Integer> userIds, String role);
    
    // 批量更新用户认证状态
    void batchUpdateUserVerification(List<Integer> userIds, Boolean isVerified);
    
    // 删除用户（支持批量删除）
    void deleteUsers(List<Integer> userIds);
    
    // 删除用户及其相关数据（帖子、评论等）
    void deleteUserAndRelatedData(Integer userId);
}